#include <vector>
using namespace std;
class Solution {
public:
    // 只要能扛过最小值的时候就能过
    // 由于有环路，如何找到这个最小值？（这个想法不现实）
    // 可以减少检查的加油站数量
    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {   
        int n = gas.size();
        for(int i = 0; i < n; )
        {
            int count = gas[i] - cost[i], step = 1;
            int j = (i + 1) % n;
            for(; count >= 0 && j != i; j = (j + 1) % n)
            {
                count += gas[j] - cost[j];
                step++;
            }
            if(j == i && count >= 0) return i;
            i = i + step;
        }
        return -1;
    }
};